#pragma once

#include <GL\glew.h>
#include <GL\freeglut.h>
#include <glm\glm.hpp>

#include "Dibujable.h"
#include "ShaderLoader.h"


// Dibuja un eje xy
class Grilla : public Dibujable {
	private:
		GLuint m_vaoGrilla;
		GLuint m_idGrilla;

		GLint m_transformacionUniformeID;

		glm::vec3 m_puntos[4];
		GLuint m_cantPuntos;

		GLuint m_cantVerticesBordes;
		glm::vec3 m_verticesBordes[4];
		GLuint m_verticesBordesHandle;

		glm::vec3 m_colorPuntos1[4];
		GLuint m_colorPuntosHandle1;

		glm::vec3 m_colorPuntos2[4];
		GLuint m_colorPuntosHandle2;

		ShaderLoader m_shaders;

	public:
		Grilla();
		~Grilla();

		// Inicializa los metadatos de la grilla
		void init();

		// Dibuja la grilla en el espacio definido por la matriz
		void dibujar(const glm::mat4 &matEspacio) const;
};

